package com.EAsystem.controller.admin;

import com.EAsystem.entity.User;
import com.EAsystem.service.UserService;
import com.EAsystem.utils.SessionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import jakarta.servlet.http.HttpSession;

@Controller
@RequestMapping("/user")
public class LoginController {

    @Autowired
    private UserService userService;

    @GetMapping("/login")
    public String showLoginPage() {
        return "login";
    }

    @PostMapping("/login")
    public String login(@RequestParam("username") String username,
                        @RequestParam("password") String password,
                        @RequestParam("role") Integer role,
                        HttpSession session,
                        Model model) {

        User user = userService.login(username, password, role);

        if (user != null) {
            // 登录成功，使用SessionUtils管理session
            SessionUtils.setCurrentUser(session, user);

            // 根据角色跳转到不同的主页
            // 管理员角色为1，教师角色为2，学生角色为3
            switch (user.getRole()) {
                case 1: // 管理员
                    return "redirect:/admin/home"; // 跳转到管理员主页
                case 2: // 教师
                    return "redirect:/teacher/home"; // 跳转到教师主页
                case 3: // 学生
                    return "redirect:/student/home"; // 跳转到学生主页
                default:
                    model.addAttribute("error", "用户角色未知或无效！");
                    return "login";
            }
        } else {
            model.addAttribute("error", "用户名、密码或角色选择错误！");
            return "login";
        }
    }

    /**
     * 处理登出请求
     * @param session HttpSession对象
     * @return 重定向到登录页面
     */
    @RequestMapping("/logout")
    public String logout(HttpSession session) {
        SessionUtils.logout(session);
        return "redirect:/user/login?logout=true";
    }
}